package com.yujiahao.bigdata.rdd.transform

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
    TODO SortBy算子
      1、可以将数据按照指定的规则进行排序,默认为升序,num （数据本身）=> num（排序的维度）
      2、如果想要降序，那么直接传递第二个参数false
      3、SoryBy算子存在shuffle操作，有改变分区的能力
      4、参数说明：默认为升序（true）
        sortBy(num （数据本身）=> num（排序的维度）,排序规则（true- / false）,可以设定分区数）
 */

object Spark_RDD_Pper_Transform_SortBy {
  def main(args: Array[String]): Unit = {


    //TODO 1、获得连接
    val conf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local")
    val sc: SparkContext = new SparkContext(conf)

    //TODO 3、业务逻辑--测试排序和分区
    val rdd = sc.makeRDD(List(1, 3, 5, 2, 7, 9, 8, 4), 2)
    //测试原始设定分区
    rdd.saveAsTextFile("output")


    //打印升序，并改变分区数为1
    val value: RDD[Int] = rdd.sortBy(num => num, true, 1)

    value.saveAsTextFile("output1")
    value.collect().foreach(println)

    //TODO 2、关闭连接
    sc.stop()
  }
}